#ifndef __USART_CONFIG_H__
#define __USART_CONFIG_H__
#include "gd32f4xx.h"

/**
 * @desc  : stm32 usart 从1开始 gd32 usart从0开始
 * @date  : 2025-02-12
 * @author: AnRui
 */


#define USE_USART_0  1  // 0:不启用  1:启用  
#define USE_USART_1  0 
#define USE_USART_2  0 
#define USE_UART_3   0  // uart 只支持同步 代码上没有区别 在电路设计有区别
#define USE_UART_4   0 
#define USE_USART_5  0 
#define USE_UART_6   0 
#define USE_UART_7   0 

 // ************************** USART_0 *****************************
#if USE_USART_0

// 参数配置: 默认不启用 校验
#define USART0_BAUDRATE              115200   // 波特率
#define USART0_NVIC                  6,0     // 中断优先级 


// 功能开关配置
#define USART0_RX_BUFFER_LEN 		1024     // 接收缓冲区大小
#define USE_USART0_PRINTF           1        // 是否使用usart 整合之后的 printf打印功能 
#define USE_USART0_RECIVE           1        // 是否在外部实现 接收函数 USART0_on_recv
#define USE_USART0_DMA              1        // USART0是否结合DMA功能

// 引脚配置
//-------------TX CONFIG------------------------------
#define USART0_TX_RCU      RCU_GPIOA              // 使能GPIOA的时钟
#define USART0_TX_PORT     GPIOA                  // 使用GPIOA端口
#define USART0_TX_PIN      GPIO_PIN_9             // 使用GPIOA的第9号引脚
#define USART0_TX_AF       GPIO_AF_7              // 使用USART0的复用功能
//-------------RX CONFIG------------------------------
#define USART0_RX_RCU      RCU_GPIOA              // 使能GPIOA的时钟
#define USART0_RX_PORT     GPIOA                  // 使用GPIOA端口
#define USART0_RX_PIN      GPIO_PIN_10            // 使用GPIOA的第10号引脚
#define USART0_RX_AF       GPIO_AF_7              // 使用USART0的复用功能



// DMA结合USART功能配置
//-------------DMA------------------------------------
#if USE_USART0_DMA
//-------------TX CONFIG------------------------------
#define USART0_TX_DMA           DMA1                      // 使用哪个DMA
#define USART0_TX_DMA_RCU       RCU_DMA1                  // 使能DMA1的时钟
#define USART0_TX_DMA_CHANNEL   DMA_CH7                   // 使用DMA1的通道7
#define USART0_TX_DMA_SUB       DMA_SUBPERI4              // 使用DMA的sub
#define USART0_TX_DMA_PRIORITY  DMA_PRIORITY_ULTRA_HIGH   // 设置DMA优先级为低
//-------------RX CONFIG------------------------------
#define USART0_RX_DMA           DMA1                      // 使用哪个DMA
#define USART0_RX_DMA_RCU       RCU_DMA1                  // 使能DMA1的时钟
#define USART0_RX_DMA_CHANNEL   DMA_CH2                   // 使用DMA1的通道2
#define USART0_RX_DMA_SUB       DMA_SUBPERI4              // 使用DMA1的sub
#define USART0_RX_DMA_PRIORITY  DMA_PRIORITY_ULTRA_HIGH   // 设置DMA优先级为高

#endif
#endif

#endif